# try:
#     file=open("test.txt",'r')
# except FileNotFoundError:
#     print('文件不存在')
# else:
#     try:
#         file.read()
#     finally:
#         file.close()


# with关键字后面的对象，需要实现__enter__和__exit__魔法方法
try:
    with open('test.txt', 'r', encoding='utf-8') as file:
        file.read()  # 不需要再手动的关闭文件，但是不会判断文件是否存在所以还是需要try
        # file.close()
except FileNotFoundError:
    print('文件不存在')


# with语句后面的结果对象，需要重写__enter__和__exit__方法
# 当进入到with代码块时，会自动调用__enter__方法里面的代码
# 当with代码块执行完以后，会自动调用__exit__方法

class demo(object):
    def __enter__(self):
        print("enter方法被执行")
        pass

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("exit方法被执行")
        pass


def create_ob():
    return demo()


with create_ob() as d:
    pass
